package com.demo.abstractFactory;

import com.demo.abstractFactory.XMLUtils;

/**
 * Created by Administrator on 2017/5/31.
 * 客户端代码
 *
 *
 * 抽象工厂模式最大的缺点。在抽象工
 *厂模式中，增加新的产品族很方便，但是增加新的产品等级结构很麻烦，抽象工厂模式的这
 *种性质称为“开闭原则”的倾斜性。“开闭原则”要求系统对扩展开放，对修改封闭，通过扩展达
 *到增强其功能的目的，对于涉及到多个产品族与多个产品等级结构的系统，其功能增强包括
 *两方面：
 * (1) 增加产品族：对于增加新的产品族，抽象工厂模式很好地支持了“开闭原则”，只需要增加
 *具体产品并对应增加一个新的具体工厂，对已有代码无须做任何修改。
 *(2) 增加新的产品等级结构：对于增加新的产品等级结构，需要修改所有的工厂角色，包括抽
 *象工厂类，在所有的工厂类中都需要增加生产新产品的方法，违背了“开闭原则”。
 *
 * 主要优点：
 * 抽象工厂模式的主要优点如下：
 *
 */
public class Client {
    public static void main(String[] args) {
        SkinFactory skinFactory;
        Button button;
        TextField textField;
        ComboBox comboBox;
        skinFactory = (SkinFactory)XMLUtils.getBean();
        button = skinFactory.createButton();
        textField = skinFactory.ceateTextField();
        comboBox = skinFactory.createComboBox();
        button.display();
        textField.display();
        comboBox.display();
    }
}

